Python nos permite definir secuencias de valores de cualquier tipo. Por ejemplo, secuencias de números o de símbolos. A esto se le llama lista. La lista viene determinada por una serie de valores encerrados entre corchetes y separados por comas.
In [2]:
a = [2, 3, 4]
Los elementos de una lista pueden ser cadenas de caracteres o incluso expresiones que se calculan en tiempo real
In [3]:
b = ['hola', 'adios']
In [4]:
c = [1, 1+3, 6/2]
In [5]:
c
Out[5]:
Una lista puede no tener elementos: la lista vacía
In [6]:
void = []
In [7]:
void
Out[7]:
In [8]:
len(a)
Out[8]:
In [9]:
len(void)
Out[9]:
Concatenación: podemos concatenar cadenas con el operador +
In [10]:
a = a + b
In [11]:
a
Out[11]:
Repetición: podemos repetir cadenas con el operador *
In [12]:
e = a*2
In [13]:
e
Out[13]:
Podemos acceder a cada elemento de la lista a través de su índice. Recuerda que los índices siempre empiezan a contar en 0
In [14]:
a
Out[14]:
In [15]:
a[0]
Out[15]:
In [16]:
a[4]
Out[16]:
In [17]:
f = [a[0], a[4]]
In [18]:
f
Out[18]:
Los índices pueden ser negativos.
In [25]:
z = range(4,10)
z
Out[25]:
In [26]:
z[-1]
Out[26]:
In [27]:
z[-6]
Out[27]:
Operador de corte: Podemos quedarnos con un trozo de una lista
In [31]:
a = [1, 2, 3, 45, 66]
In [32]:
b = a[1:4]
b
Out[32]:
In [33]:
b = a[1:]
b
Out[33]:
In [34]:
b = a[:4]
b
Out[34]:
In [35]:
b = a[:]
b
Out[35]:
Podemos utilizar índices negativos
In [36]:
c = a[-5:-1]
c
Out[36]:
In [37]:
#qué significa esto
b == a
Out[37]:
In [38]:
b is a
Out[38]:
El bucle for-in recorre los elementos de una lista.
In [39]:
s = ''
for n in a:
s = s + str(n)
s
Out[39]:
range es un caso particular de lista
In [40]:
range(20)
Out[40]:
In [41]:
a = a + range(10)
In [42]:
a
Out[42]:
In [43]:
s = ''
for n in a:
s = s + str(n)
s
Out[43]:
Comparación de listas Las listas se pueden comparar con los operaciones habituales: ==, !=, <=, ...
In [44]:
a = [1, 2, 3]
b = [2, 4]
a == b
Out[44]:
In [45]:
a != b
Out[45]:
In [46]:
a < b
Out[46]:
In [47]:
c = a
c
Out[47]:
In [48]:
a == c
Out[48]:
In [49]:
d = a[:]
In [50]:
c == d
Out[50]:
In [51]:
c is d
Out[51]:
Modificación de elementos de una lista. Mutabilidad. El operador is
In [52]:
#Dada una lista, podemos modificar sus componentes
a = range(4,10)
a
Out[52]:
In [53]:
a[2] = 99
a
Out[53]:
In [54]:
'''
EJEMPLO: Elimina los elementos negativos de una lista,
sustituyéndolos por 0
'''
b = [1, 3, -4, 5, -2, 3, -9]
for i in range(len(b)):
if b[i] < 0:
b[i] = 0
b
Out[54]:
Mutabilidad, inmutabilidad --> de qué me estás hablando?
In [55]:
a = range(4,10)
a
Out[55]:
In [57]:
b = a
b
Out[57]:
In [58]:
a[3] = 99
a
Out[58]:
In [59]:
b
Out[59]:
Esto es un poco raro, no?
In [60]:
c = a[:]
c
Out[60]:
In [61]:
c[3] = 44
c
Out[61]:
In [62]:
a
Out[62]:
In [63]:
b
Out[63]:
¿Por qué pasa esto?
In [64]:
c = a
b = a[:]
In [65]:
print a == c, a == b
In [66]:
print a is c, a is b
Las cadenas de caracteres se comportan de forma parecida, pero no igual
In [67]:
s = 'hola'
s[0]
Out[67]:
In [68]:
s[0] = 'j'
Podemos añadir elementos a una lista de dos formas diferentes. Una manera es utilizando el operador de concatenación. Esto crea una lista nueva con el nuevo elemento.
In [69]:
a = range(4,10)
b = a
In [70]:
a = a + [99]
print a, b
In [71]:
print a == b, a is b
También podemos añadir elementos con el método append. De esta forma se modifica la lista original, sin crear una lista nueva.
In [72]:
c = b
c
Out[72]:
In [73]:
c.append(99)
print c, b
In [74]:
print c == b, c is b
EJEMPLO: Crea una lista con los cuadrados de los 10 primeros números.
In [76]:
L = []
i = 1
while i <= 10:
L.append(i*i)
i+=1
L
Out[76]:
In [91]:
'''
Si a es una lista de números, escribe un programa
que modifique la lista de forma que cada
componente sea igual al cuadrado del componente original.
'''
def cuadrado_lista (a):
'''
Eleva al cuadrado los elementos de una lista
'''
for i in range(len(a)):
a[i] = a[i]**2
#No hace falta poner return: modifico la propia lista
In [92]:
lista = range(10)+range(3)
lista
Out[92]:
In [93]:
cuadrado_lista(lista)
lista
Out[93]:
In [94]:
#podemos representar mejor la lista
def dibuja(lista):
# presenta por pantalla una lista
k = len(lista)
for i in range(k-1):
print lista[i], ',',
print lista[k-1]
In [95]:
dibuja(lista)
In [96]:
# creación de una lista aleatoria
def random_list(size):
#Creo una lista aleatoria
from random import randint
# randint(a, b) devuelve un entero aleatorio N,
#a <= N <= b
data = []
for i in range(size):
data.append(randint(-10,10))
return data
In [100]:
milista = random_list(15)
dibuja(milista)
In [101]:
cuadrado_lista(milista)
dibuja(milista)
In [ ]: